﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ESAN.Componentes.BLCoreESAN.Logic.Facade;

namespace ESAN.Componentes.InscripcionOnlineESAN.Areas.Administrador.Controllers
{
    public class AdmisionController : Controller
    {
        //
        // GET: /Administrador/Admision/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult RegistrarProgramaMant()
        {

            return PartialView();
        }

        public ActionResult RegistrarProgramaListado()
        {
            ViewBag.ListadoConvocatoria = BLConvocatoria.ListarConvocatorias();
            return PartialView();
        }

        public ActionResult RegistrarProgramaForm()
        {

            return PartialView();
        }

        public ActionResult EditarPrograma(int ID)
        {
            ViewBag.ObtenerConvocatoria = BLConvocatoria.ObtenerConvocatoria(ID);

            return PartialView("RegistrarProgramaForm");
        }

        public JsonResult RegistrarPrograma(int ID, string convocatoria, DateTime fechaExamen,
                                            DateTime fechaInscripcionInicio, DateTime fechaInscripcionFinal,
                                            decimal costoPrograma, string moneda, int duracionExamen,
                                            decimal puntajeMinimo, DateTime fechaEntrega, decimal costoInscripcion
            )
        {
            bool exito = BLConvocatoria.RegistrarPrograma(ID, convocatoria, fechaExamen, fechaInscripcionInicio,
                                                          fechaInscripcionFinal, costoPrograma, moneda, duracionExamen,
                                                          puntajeMinimo, fechaEntrega, costoInscripcion);

            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult EliminarPrograma(int ID)
        {

            bool exito = BLConvocatoria.EliminarPrograma(ID);

            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);

        }

        public ActionResult RegistrarEntrevistaPersonalMant()
        {
            ViewBag.ListadoConvocatoria = BLConvocatoria.ListarConvocatorias();
            ViewBag.ListadoAspirantes = BLPostulante.ConsultarAspirante(-1, "ADM001A");

            return PartialView();
        }

        public ActionResult RegistrarEntrevistaPersonalForm(int idConv)
        {
            ViewBag.ObtenerConvocatoria = BLConvocatoria.ObtenerConvocatoria(idConv);
            ViewBag.ListadoEntrevistador = BLPostulante.ListadoProgramacionProfesor(idConv);
            ViewBag.ListadoAspirante = BLPostulante.ConsultarAspirante(idConv, "");

            return View();
        }

        public ActionResult AspiranteEntrevistaPersonalListado(int idConv)
        {
            ViewBag.ListadoAspirantesEP = BLPostulante.ConsultarAspiranteEntrevistaPersonal(idConv);

            return PartialView();
        }
        [HttpPost]
        public JsonResult ProgramarEntrevistaPersonal(int idProgramacionProfesor, DateTime? fecha,
                                                      string idPostulante, int tiempo)
        {

            string[] ids = idPostulante.Split(',');

            bool exito = BLPostulante.ProgramarEntrevistaPersonal(idProgramacionProfesor, null, ids, tiempo);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }


        public JsonResult EliminarProgramacionEP(int ID)
        {
            bool exito = BLPostulante.EliminarProgramacionProfesorSesion(ID);
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult ConsultarAspiranteMant()
        {
            ViewBag.ListaConvocatoria = BLConvocatoria.ListarConvocatorias();

            return PartialView();
        }

        public ActionResult ConsultarAspiranteListado(int idConv)
        {
            ViewBag.ListadoAspirante = BLPostulante.ConsultarAspiranteNotaAdmision(idConv);
            return PartialView();
        }

        public JsonResult RechazarPostulacion(int idPostulante, string motivo)
        {

            bool exito = BLPostulante.EliminarPostulacion(idPostulante, motivo, "ADM001X");
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

        public JsonResult AprobarPostulacion(int idPostulante)
        {
            bool exito = BLPostulante.EliminarPostulacion(idPostulante,"", "COM001A");
            return Json(new { respuesta = exito.ToString() }, JsonRequestBehavior.AllowGet);
        }

    }
}
